'use strict';

/**
 * @description 获取终端类型
 * @author Bluer_Dai
 * */

/**
 * @param {Array<Object>} 各个终端对应的端口
 */
module.exports = options => {
  return async (ctx, next) => {
    if (options && options instanceof Array) {
      const { referer } = ctx.request.header;
      if (referer) {
        // 通过请求的域名获取终端的类型
        for (let i = 0, len = options.length; i < len; i++) {
          if (options[i].hosts.includes(new URL(referer).host)) {
            // 将终端类型存放在ctx中
            ctx.deviceType = options[i].type;
            break;
          }
        }
      }
    }
    await next();
  };
};
